#ifndef NOTA_H
#define NOTA_H

#include <iostream>

using namespace std;

class Nota{
    
    friend ostream & operator << (ostream &, const Nota &);
    friend istream & operator >> (istream &, Nota &);
    
    
    public:
        Nota();
        Nota(char, int, char);
        Nota(const Nota &);
        ~Nota();
                    
        Nota & operator = (const Nota &);
        Nota operator + (const int) const;
        Nota operator - (const int) const;
                    
        bool operator == (const Nota &) const;
        bool operator < (const Nota &) const;
        bool operator > (const Nota &) const;
        bool operator <= (const Nota &) const;
        bool operator >= (const Nota &) const;
    
        Nota absoluta(); // El metodo absoluta() devuelve una nota sin su sostenido
                         // Ej. C4#.absoluta() = C4
        Nota maximaAbsoluta();// El metodo absolutaMaxima() la próxima nota si es sostenido.
                              // Ej. C4#.absolutaMaxima() = D4
        bool esB(); //Determina si la nota es B.
      
    private:
        char letra;
        int octava;
        bool sostenido;
        int numero;
        
        int letraANumero(const char) const;
        char numeroALetra(const int num) const;
        
                      
};

#endif
